// components/commonAudio/commonAudio.js
import moment from 'moment'
const app = getApp()
Component({

  /**
   * 组件的属性列表
   */
  properties: {
    src: "",
  },


  /**
   * 组件的初始数据
   */
  data: {
    isPlay: false, // 是否播放 默认暂停
    innerAudio: {}, // 播放器对象
    //播放进度控制
    progress: 0,
    ct: '00:00',
    dt: '00:00',
    // 播放进度跳转
    width: 0,
    offsetLeft: 0,
  },

  // 
  pageLifetimes: {
    // 页面显示
    show: function () {
      // console.log("页面显示")
    },
    // 页面被隐藏
    hide: function () {
      // console.log("页面隐藏")
      // app.globalData.state = this.data.isPlay
      this.setData({
        isPlay: false,
      })
      // if (this.data.innerAudio) {
      this.data.innerAudio.stop() // 停止
      //   this.data.innerAudio.destroy() // 释放音频资源
      // }

    },
  },
  lifetimes: {
    attached: function () {
      // 在组件实例进入页面节点树时执行
      // console.log("进入节点树")
      this.setData({
        innerAudio: wx.createInnerAudioContext({
          useWebAudioImplement: false // 是否使用 WebAudio 作为底层音频驱动，默认关闭。对于短音频、播放频繁的音频建议开启此选项，开启后将获得更优的性能表现。由于开启此选项后也会带来一定的内存增长，因此对于长音频建议关闭此选项
        })
      })
      this.data.innerAudio.src = this.properties.src;

      // 监听播放
      this.data.innerAudio.onTimeUpdate(_ => {
        // 播放时长
        let ct = moment.utc(moment.duration(this.data.innerAudio.currentTime, "seconds").asMilliseconds()).format("mm:ss")
        // 进度条
        let progress = ((this.data.innerAudio.currentTime) / (this.data.innerAudio.duration)) * 100;
        // 总时长
        let dt = moment.utc(moment.duration(this.data.innerAudio.duration, "seconds").asMilliseconds()).format("mm:ss")
        this.setData({ ct, progress, dt })
      })

      // 监听播放结束
      this.data.innerAudio.onEnded(_ => {
        // console.log("结束了")
        this.setData({
          isPlay: false
        })
      })
    },
    detached: function () {
      // 在组件实例被从页面节点树移除时执行
      // console.log("节点树移除")
      this.setData({
        isPlay: false,
      })
      // if (this.data.innerAudio) {
      this.data.innerAudio.stop() // 停止
      //   this.data.innerAudio.destroy() // 释放音频资源
      // }
    },
  },

  /**
   * 组件的方法列表
   */
  methods: {
    // 播放音乐
    playMusic() {
      this.data.innerAudio.play() // 播放
      this.setData({
        isPlay: true
      })
    },
    // 暂停音乐
    pauseMusic() {
      this.data.innerAudio.pause() // 暂停
      this.setData({
        isPlay: false
      })
    },
  }
})